package com.spzx.product.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.spzx.common.core.exception.ServiceException;
import com.spzx.common.core.utils.StringUtils;
import com.spzx.product.domain.ProductUnit;
import com.spzx.product.mapper.ProductUnitMapper;
import com.spzx.product.service.ProductUnitService;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProductUnitServiceImpl extends ServiceImpl<ProductUnitMapper, ProductUnit> implements ProductUnitService {
    @Override
    public List<ProductUnit> selectproductUnitList(ProductUnit productUnit) {
        LambdaQueryWrapper<ProductUnit> wrapper = Wrappers.lambdaQuery(ProductUnit.class);
        String name = productUnit.getName();
        if(!StringUtils.isEmpty(name)){
            //生成的sql为：where name like '%name%'
            wrapper.like(ProductUnit::getName,name);
        }
        return baseMapper.selectList(wrapper);
    }

    @Override
    public boolean checkUnitNameUnique(ProductUnit productUnit) {
        Long id = productUnit.getId() == null ? -1L : productUnit.getId();
        ProductUnit dbproductUnit = baseMapper.selectOne(Wrappers.lambdaQuery(ProductUnit.class)
                .eq(ProductUnit::getName, productUnit.getName())
                .last("limit 1"));
        if (dbproductUnit != null && dbproductUnit.getId().longValue() != id.longValue()) {
            throw new ServiceException((productUnit.getId() == null ? "新增" : "修改") + "商品单位" + productUnit.getName() + "'失败，商品单位名称已存在");
        }
        return true;
    }
}
